package com.ruoyi.ldzlsb.service;

import java.util.List;
import java.util.Map;
import com.ruoyi.ldzlsb.domain.SbEquipmentStatusLog;
import com.ruoyi.ldzlsb.domain.vo.SbEquipmentStatusChangeVO;
import com.ruoyi.ldzlsb.domain.vo.SbEquipmentStatusStatsVO;

/**
 * 设备状态管理服务接口
 * 
 * @author ruoyi
 * @date 2025-06-25
 */
public interface ISbEquipmentStatusService 
{
    /**
     * 查询设备状态变更日志
     * 
     * @param logId 设备状态变更日志主键
     * @return 设备状态变更日志
     */
    public SbEquipmentStatusLog selectSbEquipmentStatusLogByLogId(Long logId);

    /**
     * 查询设备状态变更日志列表
     * 
     * @param sbEquipmentStatusLog 设备状态变更日志
     * @return 设备状态变更日志集合
     */
    public List<SbEquipmentStatusLog> selectSbEquipmentStatusLogList(SbEquipmentStatusLog sbEquipmentStatusLog);

    /**
     * 查询指定设备的状态变更日志列表
     * 
     * @param equipmentId 设备ID
     * @return 设备状态变更日志集合
     */
    public List<SbEquipmentStatusLog> selectSbEquipmentStatusLogByEquipmentId(Long equipmentId);
    
    /**
     * 获取设备状态统计信息
     * 
     * @return 设备状态统计信息
     */
    public SbEquipmentStatusStatsVO getEquipmentStatusStats();
    
    /**
     * 获取年度设备状态变更统计
     * 
     * @param year 年份
     * @return 按月统计的设备状态变更数量
     */
    public List<Map<String, Object>> getEquipmentStatusChangeByMonth(Integer year);

    /**
     * 更改设备状态并记录日志
     * 
     * @param statusChangeVO 状态变更信息
     * @return 结果
     */
    public int changeEquipmentStatus(SbEquipmentStatusChangeVO statusChangeVO);

    /**
     * 新增设备状态变更日志
     * 
     * @param sbEquipmentStatusLog 设备状态变更日志
     * @return 结果
     */
    public int insertSbEquipmentStatusLog(SbEquipmentStatusLog sbEquipmentStatusLog);

    /**
     * 批量删除设备状态变更日志
     * 
     * @param logIds 需要删除的设备状态变更日志主键集合
     * @return 结果
     */
    public int deleteSbEquipmentStatusLogByLogIds(Long[] logIds);

    /**
     * 删除设备状态变更日志信息
     * 
     * @param logId 设备状态变更日志主键
     * @return 结果
     */
    public int deleteSbEquipmentStatusLogByLogId(Long logId);
} 